The data set used in our implementation is backed by a large table with TAB-separated fields. We employed a Unix shell script based on the \texttt{sed} and \texttt{awk} commands to transfer the information from this file into an SQL database which later became the back end of our implementation. Using SQL, we ran a set of queries to gain an initial, coarse understanding of the data set at hand. However we immediately ran into problems with the size of the dataset (around 8 Gigabytes)  and our application was suffering from performance issues. We decided that, in order to have a somehow dynamic demo, we needed to reduce the size of the dataset.

The implementation of our tool was written in Java/Swing, using the OpenMap \cite{openmap} and Prefuse \cite{prefuse} toolkits. We used MySQL \cite{mysql} for the SQL back end. With the OpenMap toolkit, standard operations like zooming and panning for maps were already implemented. OpenMap was also interesting because it works with a wide variety of different maps, allowing the possibility of task-based customization.

For the design, we used the Model-View-Controller paradigm. The Views we had in mind for our demo were \texttt{MapView} and \texttt{TimelineView}. These Views would also be able to modify the Model through the Controller by filtering the data by spatial, temporal and other attributes. The Controller would be the only one allowed to directly modify the Model. The main advantage of this design is that Java already has integrated support for this paradigm (i.e., classes \texttt{Observer} and \texttt{Observable}) and for future work it would be fairly simple to add extra Views. Also, communication between Views was enforced through the Controller in order to decouple each View from each other and allow flexibility for extra components.

The OpenMap framework already allows a great amount of flexibility by using the Bean paradigm. Therefore, in order to make full advantage of OpenMap, we coded our Views using also the Bean paradigm, allowing OpenMap to register our Views with other Beans, and also enabling our Views to be notified whenever there was another Bean registered. The capabilities of the OpenMap framework escape the scope of this report, so let it be enough to say that the impact of using OpenMap on our design was minimum (i.e., we were still able to enforce the Model-View-Controller paradigm).


